package com.company.nowcoder;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author jrue
 * @description https://www.nowcoder.com/practice/0e6cb06ec63148ed952f887a787f0103?tpId=98&tqId=32869&rp=1&ru=/ta/2019test&qru=/ta/2019test/question-ranking
 * @date 2019/12/9 13:42
 *
 * 公司组织团建活动，到某漂流圣地漂流，现有如下情况：
 * 员工各自体重不一，第 i 个人的体重为 people[i]，每艘漂流船可以承载的最大重量为 limit。
 * 每艘船最多可同时载两人，但条件是这些人的重量之和最多为 limit。
 * 为节省开支，麻烦帮忙计算出载到每一个人所需的最小船只数(保证每个人都能被船载)。
 *
 * 输入描述:
 * 第一行输入参与漂流的人员对应的体重数组，
 *
 * 第二行输入漂流船承载的最大重量
 *
 * 输出描述:
 * 所需最小船只数
 *
 * 输入:
 * 1 2
 * 3
 * 输出:
 * 1
 */
public class DriftBoat {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] s1 = s.split(" ");
        int[] w = new int[s1.length];
        int boat = sc.nextInt();
        for (int i = 0; i < s1.length; i++) {
            w[i] = Integer.parseInt(s1[i]);
        }

        Arrays.sort(w);

        int res = 0;

        int left = 0,right = s1.length - 1;
        while (left <= right) {
            if (w[right] + w[left] <= boat) {
                right--;
                left++;
                res++;
            }
            else if (w[right] + w[left] > boat) {
                right--;
                res++;
            }

        }
        System.out.println(res);
    }

}
